package com.yupi.springbootinit.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 工作流待办任务表实体
 * 对应表：workflow_task
 */
@TableName(value = "workflow_task")
@Data
public class WorkflowTask implements Serializable {

    /**
     * 主键（雪花ID，非自增）
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 任务标题
     */
    @TableField("taskTitle")
    private String taskTitle;

    /**
     * 任务描述
     */
    @TableField("taskDescription")
    private String taskDescription;

    /**
     * 任务类型（如：CREATE_PROCESS_SHEET）
     */
    @TableField("taskType")
    private String taskType;

    /**
     * 业务类型（如：SALES_ORDER / RDO_ORDER）
     */
    @TableField("bizType")
    private String bizType;

    /**
     * 业务ID（如：订单ID）
     */
    @TableField("bizId")
    private Long bizId;

    /**
     * 业务编号（如：订单号）
     */
    @TableField("bizNumber")
    private String bizNumber;

    /**
     * 产品名称
     */
    @TableField("productName")
    private String productName;

    /**
     * 归属部门ID
     */
    @TableField("departmentId")
    private Long departmentId;

    /**
     * 归属部门名称
     */
    @TableField("departmentName")
    private String departmentName;

    /**
     * 父任务ID
     */
    @TableField("parentTaskId")
    private Long parentTaskId;

    /**
     * 任务状态（PENDING / DONE / ...）
     */
    @TableField("taskStatus")
    private String taskStatus;

    /**
     * 优先级（NORMAL / HIGH / ...）
     */
    @TableField("priority")
    private String priority;

    /**
     * 预计完成时间
     */
    @TableField("expectedCompleteTime")
    private LocalDateTime expectedCompleteTime;

    /**
     * 认领人ID
     */
    @TableField("claimedBy")
    private Long claimedBy;

    /**
     * 认领人姓名
     */
    @TableField("claimedByName")
    private String claimedByName;

    /**
     * 认领时间
     */
    @TableField("claimedTime")
    private LocalDateTime claimedTime;

    /**
     * 完成时间
     */
    @TableField("completedTime")
    private LocalDateTime completedTime;

    /**
     * 完成备注
     */
    @TableField("completionRemark")
    private String completionRemark;

    /**
     * 创建人ID
     */
    @TableField("createdBy")
    private Long createdBy;

    /**
     * 创建人姓名
     */
    @TableField("createdByName")
    private String createdByName;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 乐观锁
     */
    @Version
    @TableField("version")
    private Integer version;

    /**
     * 创建时间
     */
    @TableField("createTime")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("updateTime")
    private LocalDateTime updateTime;

    /**
     * 是否删除：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("isDelete")
    private Integer isDelete;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}